package com.gimi.cloud.bbp.app.consumer.feign;

import java.util.Map;

import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.gimi.cloud.bbp.app.consumer.feign.config.FeignMultipartSupportConfig;
import com.gimi.cloud.bbp.dto.bank.BankDTO;
import com.gimi.cloud.bbp.dto.base.BaseAppDTO;
import com.gimi.cloud.bbp.dto.userInfo.PhotoFileUploadDTO;
import com.gimi.cloud.bbp.dto.userInfo.RdExpressInfoDTO;
import com.gimi.cloud.bbp.dto.userInfo.RdUserInfoDTO;

import feign.Headers;

/**
 * 会员详情信息管理
 * @author chendi
 * @date 2017年12月28日
 */
@FeignClient(name = "bbp-app-service",configuration = FeignMultipartSupportConfig.class)
public interface UserInfoFeignService {


    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/add", method = RequestMethod.POST)
	String addUserInfo(RdUserInfoDTO dtO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/single", method = RequestMethod.POST)
	String getUserInfoSingle(RdUserInfoDTO dtoparam);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/update", method = RequestMethod.POST)
	String updateUserInfo(RdUserInfoDTO dto);
    
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "/userInfo/photoFileUpload", method = RequestMethod.POST)
    String photoFileUpload(PhotoFileUploadDTO fileUpload);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/updateAppUserIdinfo", method = RequestMethod.POST)
    String updateAppUserIdinfo(Map<String, String> responseDataMap);
    
    /**
     * 配送收货信息
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userExpress/add", method = RequestMethod.POST)
    String addExpressInfo(RdExpressInfoDTO dtO);
    
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userExpress/single", method = RequestMethod.POST)
    String getExpressInfoSingle(RdExpressInfoDTO dtO);
    
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userExpress/update", method = RequestMethod.POST)
    String updateExpressInfo(RdExpressInfoDTO dtO);
    
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userExpress/pageList", method = RequestMethod.POST)
    String expressPageListByUser(RdExpressInfoDTO dtO);
    
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userExpress/expressDelete", method = RequestMethod.POST)
	String expressDelete(RdExpressInfoDTO parseObject);

    @SuppressWarnings("rawtypes")
	@Headers({"Content-Type: mutipart/form-data","Accept: application/json"})
    @RequestMapping(value = "userInfo/uploadCardPhoto", method = RequestMethod.POST)
    String uploadCardPhoto(MultiValueMap multipartFiles);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/getUserInfo", method = RequestMethod.POST)
    String getUserInfo(RdUserInfoDTO dto);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/updateUserbankcard", method = RequestMethod.POST)
    String updateUserbankcard(BankDTO bankDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/bankCardSign", method = RequestMethod.POST)
    String bankCardSign(BankDTO bankDTO);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/getUserBankcard", method = RequestMethod.POST)
    String getUserBankcard(RdUserInfoDTO dto);

    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/updateUnimportantUserinfo", method = RequestMethod.POST)
	String updateUnimportantUserinfo(RdUserInfoDTO userInfo);

    /**
     * 获取协议信息
     * @param dto
     * @return
     */
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @RequestMapping(value = "userInfo/getAgreement", method = RequestMethod.POST)
    String getAgreement(BaseAppDTO dto);

}
